package com.film.filmweb.service.impl;

import com.film.common.utils.DateUtils;
import com.film.filmweb.domain.MovieUser;
import com.film.filmweb.mapper.MovieUserMapper;
import com.film.filmweb.service.IMovieUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 普通用户Service业务层处理
 *
 * @author ruoyi
 * @date 2025-09-05
 */
@Service
public class MovieUserServiceImpl implements IMovieUserService {
    @Autowired
    private MovieUserMapper movieUserMapper;

    private PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

    /**
     * 查询普通用户
     *
     * @param id 普通用户主键
     * @return 普通用户
     */
    @Override
    public MovieUser selectMovieUserById(Long id) {
        return movieUserMapper.selectMovieUserById(id);
    }

    /**
     * 查询普通用户列表
     *
     * @param movieUser 普通用户
     * @return 普通用户
     */
    @Override
    public List<MovieUser> selectMovieUserList(MovieUser movieUser) {
        return movieUserMapper.selectMovieUserList(movieUser);
    }

    /**
     * 新增普通用户
     *
     * @param movieUser 普通用户
     * @return 结果
     */
    @Override
    public int insertMovieUser(MovieUser movieUser) {
        movieUser.setPassword(passwordEncoder.encode(movieUser.getPassword()));
        movieUser.setCreateTime(DateUtils.getNowDate());
        return movieUserMapper.insertMovieUser(movieUser);
    }

    /**
     * 修改普通用户
     *
     * @param movieUser 普通用户
     * @return 结果
     */
    @Override
    public int updateMovieUser(MovieUser movieUser) {
        movieUser.setUpdateTime(DateUtils.getNowDate());
        return movieUserMapper.updateMovieUser(movieUser);
    }

    /**
     * 批量删除普通用户
     *
     * @param ids 需要删除的普通用户主键
     * @return 结果
     */
    @Override
    public int deleteMovieUserByIds(Long[] ids) {
        return movieUserMapper.deleteMovieUserByIds(ids);
    }

    /**
     * 删除普通用户信息
     *
     * @param id 普通用户主键
     * @return 结果
     */
    @Override
    public int deleteMovieUserById(Long id) {
        return movieUserMapper.deleteMovieUserById(id);
    }

    @Override
    public int updatePassword(MovieUser movieUser) {
        movieUser.setPassword(passwordEncoder.encode(movieUser.getPassword()));
        return movieUserMapper.updateMovieUser(movieUser);
    }
}
